from collections import deque

# 1. 初始化 deque
# 创建空的双端队列
dq = deque()
# 从可迭代对象初始化
dq = deque([1, 2, 3])
# 指定初始容量（可选，有助于性能优化）
dq = deque(maxlen=5)  # 最多容纳5个元素，超出时自动移除另一端元素

# 2. 基本操作：添加元素
dq.append(1)  # 右侧添加
dq.appendleft(0)  # 左侧添加
print(dq)  # deque([0, 1])

# 3. 基本操作：移除元素
dq.pop()  # 右侧移除并返回：1
dq.popleft()  # 左侧移除并返回：0
print(dq)  # deque([])

# 4. 容量限制演示（maxlen）
dq = deque(maxlen=3)
dq.extend([1, 2, 3])
dq.append(4)  # 超出容量，左侧元素被自动移除
print(dq)  # deque([2, 3, 4])

# 5. 扩展元素
dq = deque([1])
dq.extend([2, 3])  # 右侧扩展
dq.extendleft([0, -1])  # 左侧扩展（注意顺序会反转）
print(dq)  # deque([-1, 0, 1, 2, 3])

# 6. 其他常用方法
dq = deque([1, 2, 3, 4, 5])
dq.rotate(2)  # 向右旋转2步
print(dq)  # deque([4, 5, 1, 2, 3])
dq.rotate(-1)  # 向左旋转1步
print(dq)  # deque([5, 1, 2, 3, 4])

print(dq.count(1))  # 统计元素出现次数：1
dq.clear()  # 清空队列
print(dq)  # deque([])
